package com.ryskoo.framework.core.utils;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class ReflectHelper {

	/**
	 * 反射获取泛型进来的具体的Model类型对应的类
	 * 
	 * @return 泛型进来的具体的Model类型对应的类
	 */
	public static Class getModelClass(Class clazz) {
		try {
			ParameterizedType pt = (ParameterizedType) clazz
					.getGenericSuperclass();
			Type t = pt.getActualTypeArguments()[0];
			String name = t.toString().substring("class ".length()).trim();
			return Class.forName(name);
		} catch (Exception e) {
		}
		return null;
	}

	/**
	 * 反射得到某个字段的值
	 * 
	 * @param obj
	 *            实体对象
	 * @param fieldName
	 *            要获取值的字段
	 * @return 该字段对应的值
	 */
	public static Object getOneFieldValue(Object obj, String fieldName) {
		try {
			Method mth = obj.getClass().getDeclaredMethod(
					"get" + fieldName.substring(0, 1).toUpperCase()
							+ fieldName.substring(1));
			return mth.invoke(obj);
		} catch (Exception err) {
			return null;
		}
	}

}
